using System;
using System.Collections.Generic;
using System.Text;
using EYDIngenieria.ERP.ObjetosDeNegocio.Dominio;
using Castle.ActiveRecord;
using NHibernate.Expression;

namespace EYDIngenieria.ERP.ObjetosDeNegocio.Repositorio
{
    public class RepositorioOrdenDeTrabajoAuxiliar
    {
        public void Agregar(OrdenDeTrabajoAuxiliar o)
        {
            o.Create();
        }

        public OrdenDeTrabajoAuxiliar[] Listar()
        {
            return ActiveRecordBase<OrdenDeTrabajoAuxiliar>.FindAll();
        }

        public void Modificar(OrdenDeTrabajoAuxiliar o)
        {
            o.UpdateAndFlush();
        }

        public void Eliminar(OrdenDeTrabajoAuxiliar o)
        {
            o.DeleteAndFlush();
        }

       
        public OrdenDeTrabajoAuxiliar Obtener(int id)
        {
            return OrdenDeTrabajoAuxiliar.Find(id);
        }

        public OrdenDeTrabajoAuxiliar[] Listar(EstadoOrdenDeTrabajo e)
        {
            ICriterion[] query = { Expression.Eq("Estado", e) };
            Order[] sort = { Order.Asc("Estado") };
            return OrdenDeTrabajoAuxiliar.FindAll(sort, query);

        }

        public OrdenDeTrabajoAuxiliar[] Listar(EstadoOrdenDeTrabajo e,Cliente c)
        {
            ICriterion[] query = { Expression.Eq("Estado", e), Expression.Eq("Cliente", c) };
            Order[] sort = { Order.Asc("Estado") };
            return OrdenDeTrabajoAuxiliar.FindAll(sort, query);

        }

        public OrdenDeTrabajoAuxiliar[] Listar(Cliente c)
        {
            ICriterion[] query = {Expression.Eq("Cliente", c) };
            Order[] sort = { Order.Asc("Estado") };
            return OrdenDeTrabajoAuxiliar.FindAll(sort, query);

        }

        public OrdenDeTrabajoAuxiliar[] Buscar(int numeroOrdenDeTrabajoAuxiliar)
        {
            ICriterion[] query = { Expression.Eq("Id", numeroOrdenDeTrabajoAuxiliar) };
            Order[] sort = { Order.Asc("Estado") };
            return OrdenDeTrabajoAuxiliar.FindAll(sort, query);

        }

    }

}
